#include "TDACorreo.h"
#include "logdebug.h"

#include <string.h>
#include <time.h>


void crearCorreo(TDACorreo* correo){

    setAsunto(correo, DEFAULT_SUB);
    setDestinatario(correo, DEFAULT_DST);
    setTextoCuerpo(correo, DEFAULT_MSG);
    setRemitente(correo, DEFAULT_RMT);

}

void destruirCorreo(TDACorreo* correo){

    setAsunto(correo, EMPTY_DATA);
    setDestinatario(correo, EMPTY_DATA);
    setTextoCuerpo(correo, EMPTY_DATA);
    setRemitente(correo, EMPTY_DATA);

}

void getRemitente(TDACorreo correo, char* remitente){
    strcpy(remitente,correo.remitente);
}

void setRemitente(TDACorreo* correo, char* remitente){
    strcpy(correo->remitente,remitente);
}

void getDestinatarios(TDACorreo correo, char* destinatarios){
    strcpy(destinatarios,correo.destinatario);
}

int getCantidadDestinatarios(TDACorreo correo) {
	return 1;
}

void setDestinatario(TDACorreo* correo, char* destinatario) {
    strcpy(correo->destinatario,destinatario);
}

time_t getFechaHoraEnviado(TDACorreo correo) {
	return correo.fechaHora;
}

void setFechaHoraEnviado(TDACorreo* correo, time_t fechaHora) {
    correo->fechaHora = fechaHora;
}

void getAsunto(TDACorreo correo, char* asunto) {
	strcpy(asunto,correo.asunto);
}

void setAsunto(TDACorreo* correo, char* asunto) {
    strcpy(correo->asunto,asunto);

}

void getTextoCuerpo(TDACorreo correo, char* textoCuerpo) {
	strcpy(textoCuerpo,correo.cuerpo);
}

void setTextoCuerpo(TDACorreo* correo, char* textoCuerpo) {
	strcpy(correo->cuerpo,textoCuerpo);
}

int importarDesde(TDACorreo* correo, FILE* archivo) {

	char str_aux[MAX_BODY_SIZE];
	fscanf(archivo,"%*s %s",(*correo).destinatario);
	fscanf(archivo,"%*s");
	fgets(correo->asunto,MAX_SUBJECT_SIZE - 1,archivo);
	fgets(correo->cuerpo,MAX_BODY_SIZE,archivo);

	while ((!feof(archivo)) && (strlen(correo->cuerpo)<MAX_BODY_SIZE)){
            fgets(str_aux,MAX_BODY_SIZE,archivo);

            if(!feof(archivo))
                strcat(correo->cuerpo,str_aux);
	}

	return 0;
}

int escribirA(TDACorreo correo, FILE* archivo) {

	time_t fechaHora;

	fechaHora = getFechaHoraEnviado(correo);

	fprintf(archivo,"From: %s\n",correo.remitente);
	fprintf(archivo,"To: %s\n",correo.destinatario);
	fprintf(archivo,"Subject: %s",correo.asunto);
	fprintf(archivo,"Date: %s",ctime(&fechaHora));
	fprintf(archivo,"%s\n",correo.cuerpo);

	fclose(archivo);
	return 0;
}



